/* 
 * cms，一个基于J2EE架构内容管理系统
 * Copyright © GrayRabbit Co., Ltd. All rights reserved.
 * Department:运营department
 * 更多信息请访问：
 * http://code.google.com/p/gray-rabbit-cms/
 */
package org.grayrabbit.cms.service.content;

import java.util.List;
import java.util.Set;

import org.grayrabbit.cms.entity.Admin;
import org.grayrabbit.cms.entity.Content;
import org.grayrabbit.cms.vo.content.ContentBean;
import org.grayrabbit.dao.util.Page;
import org.grayrabbit.dao.util.QueryCondition;
import org.grayrabbit.service.GenericService;

/**
 * <b>OperLog</b>的service接口
 * 
 * @version 1.0,创建时间: 2011-05-16 14:40:11
 */
public interface ContentService extends GenericService {
	/**
	 * 根据主键查询实体
	 * 
	 * @param contentId
	 * @return
	 */
	Content getContent(String contentId);
	/**生成时 调用 返回实际的内容  非代理类内容  以获取 各个类型内容的私有 属性*/
	public Content getRealContent(final String contentId) ;

	/**
	 * 批量删除
	 * 
	 * @param key
	 */
	void delete(String[] key);

	/**
	 * 删除实体
	 * 
	 * @param content
	 */
	void delete(Content content);

	/**
	 * 保存实体
	 * 
	 * @param content
	 */
	void save(Content content, Admin user, String cflag);

	/**
	 * 保存实体2
	 * @param category
	 */
	void save2(Content content);
	
	/**
	 * 根据bean组装统计查询条件(名称参数)
	 * 
	 * @param content
	 * @return
	 */
	Page<Content> getPage(ContentBean contentBean);

	/**
	 * 填充分页组件的查询：(名称参数)
	 * 
	 * @param page
	 * @param contentBean
	 */
	void list(Page<Content> page, ContentBean contentBean);

	/**
	 * 根据文章状态获取文章总数
	 * 
	 * @param contentBean
	 * @return
	 */
	int getCount(ContentBean contentBean);

	/**
	 * 填充分页组件的NotIn查询：(名称参数)
	 * 
	 * @param page
	 * @param contentBean
	 */
	void listNotIn(Page<Content> page, ContentBean contentBean);
	/**
	 * 根据栏目id查询文章
	 * @return
	 */
	List<Content>findByCatId(String catId);
	
	List<Content> findAll(ContentBean contentBean);

	public List<Content> findAll();

	Set<String> findAllCateIds(Set<String> set, String catId);

	List<Content> ftlFindAll(String catName,String catShortName,String siteId,String[] docIds, String flag, String[] catIds,
			String[] contentTypes, String begintime, String endTime,
			String[] keywords, String condition, String orderBy, long[] limit,
			boolean pagination, long pageSize, long crrunetPage);

	List<Content> ftlFindAllTopic(String[] docIds, String flag, String topicId,
			String[] contentTypes, String begintime, String endTime,
			String condition, String orderBy, long[] limit, boolean pagination,
			long pageSize, long crrunetPage, boolean showLike, boolean rondom,
			long maxPageCount);
	
	List<Content> darkblueFindAll(String[] siteId, String[] docIds, String flag, String[] catIds, String[] topicIds,
			String[] contentTypes, String begintime, String endTime,
			String[] keywords, String condition, String orderBy, long[] limit,
			boolean pagination, long pageSize, long crrunetPage,
			boolean showLike, boolean rondom, long maxPageCount, String articleType, String rollannounceSimpleName);
	
	/**
	 * 根据站点ID获取文章
	 * @param list
	 * @param currentContentIndex
	 * @param max
	 * @return
	 */
	List<String> findContentIdsBySiteId(List<String> list,
			int currentContentIndex, int max);
	
	/**
	 * 根据站点ID获取增量文章
	 * @param list
	 * @param currentContentIndex
	 * @param max
	 * @return
	 */
	List<String> findMoreContentIdsBySiteId(List<String> list,
			int currentContentIndex, int max);

	int findTotalNum(QueryCondition qc);


	/**
	 * 根据栏目ID获取文章
	 * @param list
	 * @param currentContentIndex
	 * @param max
	 * @return
	 */
	List<String> findContentIdsByCatId(List<String> list,
			int currentContentIndex, int max);

	/**
	 * 根据专题ID获取文章
	 * @param list
	 * @param currentContentIndex
	 * @param max
	 * @return
	 */
	List<String> findContentIdsByTopicId(List<String> list,
			int currentContentIndex, int max);
	
	/**
	 * 根据栏目ID获取增量文章
	 * @param list
	 * @param currentContentIndex
	 * @param max
	 * @return
	 */
	List<String> findMoreContentIdsByCatId(List<String> list,
			int currentContentIndex, int max);

	/**
	 * 根据专题ID获取增量文章
	 * @param list
	 * @param currentContentIndex
	 * @param max
	 * @return
	 */
	List<String> findMoreContentIdsByTopicId(List<String> list,
			int currentContentIndex, int max);

	/**
	 * 获取待发布的文章
	 * @param contentBean
	 * @return
	 */
	List<Content> findAllByPublish(ContentBean contentBean);
	
	List<Content> findAllByPublish(ContentBean contentBean,int pageSize);

	/**
	 * 检查文章标题是否已经存在
	 * @param role
	 * @return
	 */
	Boolean checkNameUnique(String contentTitle);
	
	void updateContent(Content obj);
	/**
	 * 税务查询
	 * @param page
	 * @param contentBean
	 */
	void searchList(Page<Content> page, ContentBean contentBean);
	/**
	 * 税务筹划查询
	 * @param page
	 * @param contentBean
	 */
	void searchPlanList(Page<Content> page, ContentBean contentBean);
	/**
	 * 根据栏目id查询文章-多个栏目id
	 * @param catList
	 * @return
	 */
	List<Content>findByCats(List<String>catList);

	/**
	 * 根据文章id获得栏目名称
	 * @param contentId
	 * @return
	 */
    String getCatName(String contentId);
    
    
    public Content findPictureContent(String catId);
    public List<Content> findContentS(String catId,int num);
    
    /** 当前站点下的所有文章
     * */
	void listSite(Page<Content> page, ContentBean content);
	int savebath(Set<Content> set);
}